package com.kunpeng.weibo.renren.utils;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * @author 李勇(yong.li@opi-corp.com) 2011-3-7
 */
@SuppressWarnings("unchecked")
public final class JsonUtils {

	/**
	 * 从JSONArray中取出第index个JSONObject.
	 * 
	 * @param jsonObjects
	 * @param index
	 * @return 返回JSONObject或null
	 */
	public static JSONObject getIndexJSONObject(JSONArray jsonObjects, int index) {
		if (jsonObjects == null || jsonObjects.length() <= index) {
			return null;
		}
		try {
			return (JSONObject) jsonObjects.get(index);
		} catch (JSONException e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 从JSONObject对象中提取key的值。
	 * 
	 * @param <T>
	 * @param jsonObj
	 * @param propName
	 * @param propType
	 * @return 返回T，或null。
	 */
	public static <T> T getValue(JSONObject jsonObj, String propName, Class<T> propType) {
		try {
			return (T) jsonObj.get(propName);
		} catch (JSONException e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 从JSONObject对象中提取key的值。
	 * 
	 * @param <T>
	 * @param jsonObj
	 * @param propName
	 * @param propType
	 * @param defValue
	 * @return 返回T，或defValue。
	 */
	public static <T> T getValue(JSONObject jsonObj, String propName, Class<T> propType, T defValue) {
		try {
			return (T) jsonObj.get(propName);
		} catch (JSONException e) {
			e.printStackTrace();
			return defValue;
		}
	}
}
